Java反射:如何获得评论?
我在Java解析方面遇到了一些困难。我需要通过反射来获得类、字段、方法等的注释
我发现了JavaParser,看起来它可以引发评论,但我不知道怎么做,因为所有的例子都只是解析给定的字符串。我发现TypeSolver
可以使用规范名称,但它似乎无法处理注释
我的问题是,如果我只有Class<?>
,而且该项目还有其他一些jar's
也应该反思,如何找到评论。通过调试,我看到了原始的源代码,似乎可以以某种方式完成
谢谢
另外,我有源代码,我需要将Class<?>
与源代码匹配,然后通过JavaParser提取注释
# 1 楼答案
首先,不能使用反射直接获取注释,也不能使用读取“.class”文件的库获取注释。该信息不存在于“.class”文件中,反射只知道从那里可以直接获得信息
正如人们所指出的,只有拥有源代码才能获得评论。如果你有一个源代码文件,你应该能够使用
JavaParser
或(可能)其他库来提取注释。。。或者编写自己的解析器问题是从
Class
对象映射到相应的源代码文件。假设应用程序的类路径上有多个JAR对应的多个源树。你需要:方法是:
Class
对象获取完全限定的类名李>foo.bar.Baz
将变成foo/bar/Baz.java
clazz.getProtectionDomain().getCodeSource().getLocation().toURI()
获取从中加载类的URI李>上述一些步骤可能会带来问题。例如:
getCodeSource()
可以返回null
URI
可能有一个奇怪的协议打开源文件后,构建一个
Reader
并解析源代码。。。使用您选择的Java解析器如果您的项目是“绿色领域”项目,那么定义自定义注释类型(retention==runtime)并将注释转换为注释可能会更简单。可以简单快速地提取这些注释,而不存在上述任何可能的故障模式
javadoc显示可以使用
JavaParser
实例来解析File
、InputStream
、Reader
或String
# 2 楼答案
如果你有源代码,它可能是一个JAR文件的形式。在JAR文件中定位源文件非常容易,因为该类提供了包和本地名称。您必须考虑嵌套类的情况,但其实很容易实现。
找到源文件后,可以使用JavaParser轻松解析并检索注释:
# 3 楼答案
您应该创建注释类,并为您的需求获取价值。例如: